跳到主要内容

Unity 动画系统学习

动画系统常用类

参考资料 Unity 动画系统 Animation 和 Animator 联系与区别

Animator:动画控制器,控制 Mechanic 动画系统的接口,用来管理多个动画;

Animation:用于播放动画,老版中单独的一个Animation也可以完成动画的播放和切换,不过状态切换之类的需要程序猿代码控制。在新版中,状态管理部分交给了Animator;

AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画;

AnimationState:动画状态,用来改变单一动画的播放速度、权重、时间、层级、播放Mode,以及混合模式;

AnimationEvent:动画事件,用于某种条件下触发自定义函数;

StateMachineBehaviour: 动画状态机管理器拓展类,脚本继承了该类之后,绑定到Animator上某State上面。当状态发生变化,可以重载响应函数。类似 触发器的响应函数;

Blend Tree

参考资料 Unity动画系统详解5:BlendTree混合树是什么?(使用教程)

在游戏中,游戏角色有时候并不精确地处在某一个状态中,如站立与行走之间的过渡。状态转换是从一个状态平滑转换为另一个状态的一个过程。而混合,则可以看作有多个动画同时进行。

要使用混合,参与混合的动作必须有相似性质和时间。混合,可以看做一种特殊的状态。

动画事件

可以在动画中插入事件,例如走路动画中插入一个播放走路声音的事件

image.png

这个事件会查找挂载在当前物体下脚本的同名 public 修饰的函数

/// <summary>
/// 这里得是 public 修饰的函数,因为动画事件里调用了这个名称的事件
/// 脚步声
/// </summary>
public void StepAudio()
{
Debug.Log("走路的声音");
}